#pragma once

#include <QMainWindow>
#include <QTimer>
#include <QLabel>
#include "CocosWidget.h"

/**
 * @brief MainWindow - 纸牌接龙主窗口
 *
 * 负责：
 * - 窗口布局管理
 * - 菜单栏（游戏、帮助）
 * - 状态栏（移动次数、时间、分数、FPS）
 * - 游戏逻辑控制
 */
class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    explicit MainWindow(QWidget* parent = nullptr);
    ~MainWindow() override;

private slots:
    // 菜单动作
    void onNewGame();
    void onRestartGame();
    void onUndo();
    void onExit();
    void onAbout();

    // OpenGL渲染事件响应
    void onFpsChanged(float fps);
    void onCardClicked(float x, float y);

    // 游戏状态更新
    void updateGameTime();

private:
    /**
     * @brief 设置UI布局
     */
    void setupUI();

    /**
     * @brief 创建菜单栏
     */
    void setupMenuBar();

    /**
     * @brief 创建状态栏
     */
    void setupStatusBar();

    /**
     * @brief 更新状态栏显示
     */
    void updateStatusBar();

    /**
     * @brief 应用Deepin主题样式
     */
    void applyDeepinTheme();

private:
    // UI组件
    CocosWidget* m_cocosWidget;           ///< OpenGL渲染窗口

    // 状态栏标签
    QLabel* m_movesLabel;                 ///< 移动次数
    QLabel* m_timeLabel;                  ///< 游戏时间
    QLabel* m_scoreLabel;                 ///< 分数
    QLabel* m_fpsLabel;                   ///< FPS显示

    // 游戏状态
    int m_moves;                          ///< 当前移动次数
    int m_score;                          ///< 当前分数
    int m_gameTimeSeconds;                ///< 游戏时间（秒）
    QTimer* m_gameTimer;                  ///< 游戏计时器

    bool m_gameStarted;                   ///< 游戏是否已开始
};
